Skip to content

Give the MSIX its own numeric version - #5

Merged
jslauthor merged 1 commit into
mainfrom
fix/msix-version
Aug 16, 2026
Merged

Give the MSIX its own numeric version#5
jslauthor merged 1 commit into
mainfrom
fix/msix-version

Conversation

@jslauthor

Copy link
Copy Markdown
Contributor

Every pull request has been failing the Windows job at makeappx, and never for a reason to do with the change under review:

error C00CE169: The attribute 'Version' with value '1.0.0-pr4.0'
failed to parse -- violates pattern constraint

The manifest was built from the display version, which is only ever clean on a tag. On anything else it carries a suffix (1.0.0-pr4 on a PR, 1.0.0-dev locally) and the MSIX schema admits four dot-separated integers and nothing else. A tagged release packs fine, which is why v1.0.0 shipped and this stayed invisible.
MSIX_VERSION is now derived rather than borrowed: the numeric project version with any pre-release suffix stripped, then the commit count. The commit count is there for the same reason CFBundleVersion uses it — Windows compares these to decide what counts as an upgrade, and two builds of 1.0.0 that both said 1.0.0.0 would be indistinguishable to it.
Checked against the schema's own regex:

ref display msix old scheme
v1.0.0 1.0.0 1.0.0.49 OK
PR branch 1.0.0-pr4 1.0.0.49 fails1.0.0-pr4.0
v1.1.0-beta.2 1.1.0-beta.2 1.1.0.49 fails1.1.0-beta.2.0
v2.10.3 2.10.3 2.10.3.49 OK
The pre-release tag case had not bitten yet but would have.
The substitution step now fails if any placeholder survives it — the original failure was a substitution producing something invalid rather than not happening at all, and that is worth catching separately.
🤖 Generated with Claude Code

Every pull request has been failing the Windows job at makeappx, and
never for a reason to do with the change under review:
  error C00CE169: The attribute 'Version' with value '1.0.0-pr4.0'
  failed to parse -- violates pattern constraint
The manifest was built from the DISPLAY version, which is only ever
clean on a tag. On anything else it carries a suffix -- "1.0.0-pr4" for
a PR, "1.0.0-dev" locally -- and the MSIX schema admits four
dot-separated integers and nothing else. A tagged release packed fine,
so this stayed invisible until PRs started building Windows.
MSIX_VERSION is now derived rather than borrowed: the project's numeric
version with any pre-release suffix stripped, then the commit count. The
commit count is there for the same reason CFBundleVersion uses it, and
the reasoning is already written down in CMakeLists -- Windows compares
these numbers to decide what counts as an upgrade, and two builds of
1.0.0 that both claimed 1.0.0.0 would be indistinguishable to it.
Checked against the schema's own regex, which also turned up a case that
had not bitten yet: a pre-release TAG like v1.1.0-beta.2 would have
failed to pack in exactly the same way.
The substitution step now fails if any placeholder survives it, since
the previous failure was one substitution producing something invalid
rather than not happening at all.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@cursor

cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@jslauthor
jslauthor merged commit 8ab03ad into main Aug 16, 2026
5 checks passed
@jslauthor
jslauthor deleted the fix/msix-version branch August 16, 2026 19:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant